options(scipen=999)

#Set working directory
setwd("insert location of your working directory")

#load required packages
library("xlsx")
library("Hmisc")
library("ggplot2")
library ("car")
library("MASS")
library("psych")
library("GGally")
library("stargazer")
library("DAMisc")

#load datafile
mydata <- read.xlsx("masterdataset_upload_v3.xlsx", 1, stringsAsFactors=FALSE)

#data preparation. convert variables from string to numeric variables. 
for(i in c("support_Paris_agreement", 
           "GDP_ppp_2015_log", 
           "Democracy_index", 
           "postmaterialism",
           "religion",
           "cosmopolitanism",
           "political_orientation",
           "coal_rents_2015",
           "oil_rents_2015",
           "natural_gas_rents_2015",
           "vulnerability_2015",
           "Du_Pont_Ambition",
           "cosmopolitanism_index"
           "CAT_ranking",
           "CCPI_2019",
           "Dupont_ambition_high",
           "Dupont_ambition_low",
           )){
  mydata[,i] <- as.numeric(mydata[,i] )
}

#The dependent variable of this analysis is "Du_Pont_Ambition". We invert the Du Pont ambition variable to facilitate intuitive interpretation. 
mydata$Du_Pont_Ambition <- abs(mydata$Du_Pont_Ambition - max(mydata$Du_Pont_Ambition, na.rm = TRUE))

#Regression analysis

#The first regression model includes only the material factors. 
reg1 <- lm(Du_Pont_Ambition~ 
             GDP_ppp_2015_log+ 
             Democracy_index +
             coal_rents_2015+
             natural_gas_rents_2015+
             oil_rents_2015+
             vulnerability_2015, 
           data = mydata)

#The second regression model includes Paris Agreement support and material factors. 
reg2 <- lm (Du_Pont_Ambition~
              support_Paris_agreement+ 
              GDP_ppp_2015_log+ 
              Democracy_index+
              coal_rents_2015+ 
              oil_rents_2015+
              natural_gas_rents_2015+
              vulnerability_2015,
            data = mydata)

#The third and fourth regression models include values, with and without material factors.
reg3a <- lm (Du_Pont_Ambition~ 
               postmaterialism+
               cosmopolitanism, 
             data = mydata)
reg3b <- lm (Du_Pont_Ambition~ 
               postmaterialism+
               cosmopolitanism+ 
               GDP_ppp_2015_log+ 
               Democracy_index+
               coal_rents_2015+
               natural_gas_rents_2015+
               oil_rents_2015+ 
               vulnerability_2015, 
             data = mydata)

#stargazer command produces table 2
stargazer(reg1,reg2, reg3a, reg3b, type="html", 
          align=TRUE, no.space=TRUE, omit.stat="ser", 
          intercept.bottom = FALSE, single.row = TRUE, 
          out="regression-models.html")


##The following regression models produce the results in table 3. The stargazer command produces the table with all the results. 
reg20 <- lm(CCPI_2019~ 
              GDP_ppp_2015_log+ 
              Democracy_index +
              coal_rents_2015+
              natural_gas_rents_2015+
              oil_rents_2015+
              vulnerability_2015, 
            data = mydata)
reg22 <- lm(CAT_ranking~ 
              GDP_ppp_2015_log+
              Democracy_index +
              coal_rents_2015+
              natural_gas_rents_2015+
              oil_rents_2015+
              vulnerability_2015,
            data = mydata)
stargazer(reg20, reg22, type="html", 
          align=TRUE, no.space=TRUE, omit.stat="ser",
          intercept.bottom = FALSE, single.row = TRUE, 
          out="CCPI-CAT-Material-factors-NDC-ambition.html")

#Supplementary material

#descriptive statistics for all variables in dataset. Produces table S1. 
stargazer(mydata,
          type="text", 
          no.space= TRUE, 
          out="descriptives22.html")

#Bivariate relationships. Produce figures S1-S4. 

#bivariate relationship between Paris Agrement Support and NDC Ambition 
theme_set(theme_light())
g <- ggplot(mydata, aes(support_Paris_agreement, Du_Pont_Ambition))
g <- g+ geom_point() + geom_smooth(method="lm", colour="gray", se=F) + labs(y="NDC ambition", x="Paris Agreement support") 
labels_dv_dist <- element_text(face = "plain", size = 12)
g <- g + theme(axis.text = labels_dv_dist)
ggsave(filename = "NDC_amb_PA_support.pdf", plot = g,  path = NULL, scale = 1, limitsize = TRUE, width = 5, height = 5, units = "in", dpi = 300)

#correlation
rcorr(mydata$Du_Pont_Ambition, mydata$support_Paris_agreement, type="pearson")

#Bivariate relationship between NDC Ambition and GDP/capita
theme_set(theme_light())
b <- ggplot(mydata, aes(GDP_ppp_2015_log, Du_Pont_Ambition))
b <- b+ geom_point() + geom_smooth(method="lm", colour="gray", se=F) + labs(y="NDC ambition", x="GDP/Capita(log)") 
labels_dv_dist <- element_text(face = "plain", size = 12)
b <- b + theme(axis.text = labels_dv_dist)
ggsave(filename = "NDC_amb_Gdp.pdf", plot = b,  path = NULL, scale = 1, limitsize = TRUE, width = 5, height = 5, units = "in", dpi = 300)

#correlation
rcorr(mydata$Du_Pont_Ambition, mydata$GDP_ppp_2015_log)

#Bivariate relationship between NDC Ambition and Coal rents
theme_set(theme_light())
c <- ggplot(mydata, aes(coal_rents_2015, Du_Pont_Ambition))
c <- c+ geom_point() + geom_smooth(method="lm", colour="gray", se=F) + labs(y="NDC ambition", x="Coal rents") 
labels_dv_dist <- element_text(face = "plain", size = 12)
c <- c + theme(axis.text = labels_dv_dist)
ggsave(filename = "NDC_amb_coal.pdf", plot = b,  path = NULL, scale = 1, limitsize = TRUE, width = 5, height = 5, units = "in", dpi = 300)

#correlation
rcorr(mydata$Du_Pont_Ambition, mydata$coal_rents_2015)

#Bivariate relationship between NDC Ambition and Democracy
theme_set(theme_light())
d <- ggplot(mydata, aes(Democracy_index, Du_Pont_Ambition))
d <- d+ geom_point() + geom_smooth(method="lm", colour="gray", se=F) + labs(y="NDC ambition", x="Democracy") 
labels_dv_dist <- element_text(face = "plain", size = 12)
d <- d + theme(axis.text = labels_dv_dist)
ggsave(filename = "NDC_amb_democracy.pdf", plot = b,  path = NULL, scale = 1, limitsize = TRUE, width = 5, height = 5, units = "in", dpi = 300)

#correlation
rcorr(mydata$Du_Pont_Ambition, mydata$vulnerability_2015)

#Bivariate relationship NDC Ambition and Postmaterialism
theme_set(theme_light())
f <- ggplot(mydata, aes(postmaterialism, Du_Pont_Ambition))
f <- f+ geom_point() + geom_smooth(method="lm", colour="gray", se=F) + labs(y="NDC ambition", x="Postmaterialism") 
labels_dv_dist <- element_text(face = "plain", size = 12)
f <- f + theme(axis.text = labels_dv_dist)
ggsave(filename = "postmaterialism-ambition.pdf", plot = g,  path = NULL, scale = 1, limitsize = TRUE, width = 5, height = 5, units = "in", dpi = 300)

#correlation
rcorr(mydata$Du_Pont_Ambition, mydata$postmaterialism)


#Bivariate relationship NDC Ambition and Cosmopolitanism
theme_set(theme_light())
h <- ggplot(mydata, aes(cosmopolitanism, Du_Pont_Ambition))
h <- h+ geom_point() + geom_smooth(method="lm", colour="gray", se=F) + labs(y="NDC ambition", x="Cosmopolitanism") 
labels_dv_dist <- element_text(face = "plain", size = 12)
h <- h + theme(axis.text = labels_dv_dist)
ggsave(filename = "cosmopolitanism-ambition.pdf", plot = g,  path = NULL, scale = 1, limitsize = TRUE, width = 5, height = 5, units = "in", dpi = 300)

#correlation
rcorr(mydata$Du_Pont_Ambition, mydata$cosmopolitanism)


#Bivariate relationship NDC Ambition and Vulnerability
theme_set(theme_light())
i <- ggplot(mydata, aes(vulnerability_2015, Du_Pont_Ambition))
i <- i+ geom_point() + geom_smooth(method="lm", colour="gray", se=F) + labs(y="NDC ambition", x="Vulnerability") 
labels_dv_dist <- element_text(face = "plain", size = 12)
i <- i + theme(axis.text = labels_dv_dist)
ggsave(filename = "vulnerability-ambition.pdf", plot = g,  path = NULL, scale = 1, limitsize = TRUE, width = 5, height = 5, units = "in", dpi = 300)
rcorr(mydata$Du_Pont_Ambition, mydata$vulnerability_2015)



#Robustness tests. 

#The following regression models produce the results in table S2. The stargazer command produces the table with all the results. 
reg1d <- lm(Du_Pont_Ambition~ GDP_ppp_2015_log+ Democracy_index +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015, data = mydata)
reg1e <- lm(Du_Pont_Ambition~ GDP_ppp_2015_log+ Democracy_index, data = mydata)
reg1f <- lm(Du_Pont_Ambition~ GDP_ppp_2015_log+ Democracy_index +coal_rents_2015, data = mydata)
reg1g <- lm(Du_Pont_Ambition~ GDP_ppp_2015_log+ Democracy_index +vulnerability_2015, data = mydata)
reg1h <- lm(Du_Pont_Ambition~ GDP_ppp_2015_log+ Democracy_index +coal_rents_2015+ vulnerability_2015, data = mydata)
reg1i <- lm(Du_Pont_Ambition~ Democracy_index +coal_rents_2015+ vulnerability_2015, data = mydata)
reg1j <- lm(Du_Pont_Ambition~ GDP_ppp_2015_log +coal_rents_2015+ vulnerability_2015, data = mydata)
stargazer(reg1d, reg1e, reg1f, reg1g, reg1h, reg1i, reg1j, type="html", align=TRUE, no.space=TRUE, omit.stat="ser", intercept.bottom = FALSE, single.row = TRUE, out="material-factors-robustness.html")


#The following regression models produce the results in table S4. The stargazer command produces the table with all the results. 
reg3c <- Du_Pont_Ambition <- lm (Du_Pont_Ambition~support_Paris_agreement+ GDP_ppp_2015_log+ Democracy_index +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015, data = mydata)
reg3d <- Du_Pont_Ambition <- lm (Du_Pont_Ambition~support_Paris_agreement+ GDP_ppp_2015_log+ Democracy_index, data = mydata)
reg3e <- Du_Pont_Ambition <- lm (Du_Pont_Ambition~support_Paris_agreement+ GDP_ppp_2015_log, data = mydata)
reg3f <- Du_Pont_Ambition <- lm (Du_Pont_Ambition~support_Paris_agreement+ Democracy_index +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015 + vulnerability_2015, data = mydata)
reg3g <- Du_Pont_Ambition <- lm (Du_Pont_Ambition~support_Paris_agreement+ Democracy_index +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015, data = mydata)
reg3h <- Du_Pont_Ambition <- lm (Du_Pont_Ambition~support_Paris_agreement+ Democracy_index, data = mydata)
stargazer(reg3c, reg3d, reg3e, reg3f, reg3g, reg3h, type="html", align=TRUE, no.space=TRUE, omit.stat="ser", intercept.bottom = FALSE, single.row = TRUE, out="PA-support-robustness.html")

#The following regression models produce the results in table S5. The stargazer command produces the table with all the results. 
reg4a <- lm (Du_Pont_Ambition~ postmaterialism+cosmopolitanism + religion+political_orientation, data = mydata)
reg4b <- lm (Du_Pont_Ambition~ postmaterialism+cosmopolitanism + religion+political_orientation+ GDP_ppp_2015_log+Democracy_index , data = mydata)
reg4c <- lm (Du_Pont_Ambition~ postmaterialism+cosmopolitanism + religion+political_orientation+ GDP_ppp_2015_log+Democracy_index +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015+ vulnerability_2015, data = mydata)
stargazer(reg4a,reg4b, reg4c, type="html", align=TRUE, no.space=TRUE, omit.stat="ser", intercept.bottom = FALSE, single.row = TRUE, out="values-robustness.html")

#The following regression models produce the results in table S6. The stargazer command produces the table with all the results. We first invert the index to facilitate interpretation.
mydata$cosmopolitanism_index <- abs(mydata$cosmopolitanism_index - max(mydata$cosmopolitanism_index, na.rm = TRUE))
reg6a <- lm (Du_Pont_Ambition~ postmaterialism+cosmopolitanism_index, data = mydata)
reg6b <- lm (Du_Pont_Ambition~ postmaterialism+cosmopolitanism_index+ GDP_ppp_2015_log+ Democracy_index +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015+ vulnerability_2015, data = mydata)
stargazer(reg6a, reg6b, type="html", align=TRUE, no.space=TRUE, omit.stat="ser", intercept.bottom = FALSE, single.row = TRUE, out="cosmopolitanism_index-NDC-ambition.html")

#The following regression models produce the results in table S7. The stargazer command produces the table with all the results. 
reg1_uncond<- lm(Du_Pont_Ambition~ GDP_ppp_2015_log+ Democracy_index +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015+vulnerability_2015, data=subset(mydata, NDC_unconditional=="1"))
reg2_uncond <- lm (Du_Pont_Ambition~GDP_ppp_2015_log+ Democracy_index +coal_rents_2015+ oil_rents_2015 + natural_gas_rents_2015 + vulnerability_2015+support_Paris_agreement, data=subset(mydata, NDC_unconditional=="1"))
reg3_uncond <- lm (Du_Pont_Ambition~GDP_ppp_2015_log+ Democracy_index +coal_rents_2015+ oil_rents_2015 + natural_gas_rents_2015 + vulnerability_2015+postmaterialism+local_global, data=subset(mydata, NDC_unconditional=="1"))
stargazer(reg1_uncond, reg2_uncond, reg3_uncond, type="html", align=TRUE, no.space=TRUE, omit.stat="ser", intercept.bottom = FALSE, single.row = TRUE, out="uncond-robustness-test-NDC-ambition.html")

#The following regression models produce the results in table S8. The stargazer command produces the table with all the results. 
reg_dupont_low<- lm(Dupont_ambition_low~ GDP_ppp_2015_log+ v2x_mpi_2015 +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015+vulnerability_2015, data=mydata)
reg_dupont_low_PA <- lm (Dupont_ambition_low~GDP_ppp_2015_log+ v2x_mpi_2015 +coal_rents_2015+ oil_rents_2015 + natural_gas_rents_2015 + vulnerability_2015+support_Paris_agreement, data=mydata)
reg_dupont_low_values <- lm (Dupont_ambition_low~GDP_ppp_2015_log+ v2x_mpi_2015 +coal_rents_2015+ oil_rents_2015 + natural_gas_rents_2015 + vulnerability_2015+postmaterialism+cosmopolitanism, data=mydata)
stargazer(reg_dupont_low, reg_dupont_low_PA, reg_dupont_low_values, type="html", align=TRUE, no.space=TRUE, omit.stat="ser", intercept.bottom = FALSE, single.row = TRUE, out="low-amb-cond-NDC-ambition.html")

##The following regression models produce the results in table S9. The stargazer command produces the table with all the results. 
reg_dupont_low_excl_cond<- lm(Dupont_ambition_low~ GDP_ppp_2015_log+ v2x_mpi_2015 +coal_rents_2015+natural_gas_rents_2015+oil_rents_2015+vulnerability_2015, data=subset(mydata, Fully_conditional=="0"))
reg_dupont_low_PA_excl_cond <- lm (Dupont_ambition_low~GDP_ppp_2015_log+ v2x_mpi_2015 +coal_rents_2015+ oil_rents_2015 + natural_gas_rents_2015 + vulnerability_2015+support_Paris_agreement,data=subset(mydata, Fully_conditional=="0"))
reg_dupont_low_values_excl_cond <- lm (Dupont_ambition_low~GDP_ppp_2015_log+ v2x_mpi_2015 +coal_rents_2015+ oil_rents_2015 + natural_gas_rents_2015 + vulnerability_2015+postmaterialism+local_global,data=subset(mydata, Fully_conditional=="0"))
stargazer(reg_dupont_low_excl_cond, reg_dupont_low_PA_excl_cond, reg_dupont_low_values_excl_cond, type="html", align=TRUE, no.space=TRUE, omit.stat="ser", intercept.bottom = FALSE, single.row = TRUE, out="excl-cond-low-NDC-ambition.html")
